import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class AdminLoginFrame extends JFrame {
    private JTextField usernameField;  // 用户名输入框
    private JPasswordField passwordField;  // 密码输入框

    // 构造方法，设置界面基本属性
    public AdminLoginFrame() {
        setLocationRelativeTo(null);  // 将界面居中显示
        setTitle("管理员登录");  // 设置界面窗口标题
        setSize(320, 200);  // 设置界面大小
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);  // 设置关闭操作，隐藏当前窗口并释放其它资源

        JPanel panel = new JPanel();  // 创建面板，默认FlowLayout布局
        add(panel);  // 将面板添加到界面

        JLabel userLabel = new JLabel("用户名:");  // 创建标签
        panel.add(userLabel);  // 将标签添加到面板

        usernameField = new JTextField(20);  // 创建用户名输入框
        panel.add(usernameField);  // 将用户名输入框添加到面板

        JLabel passwordLabel = new JLabel("密码:");  // 创建密码标签
        panel.add(passwordLabel);  // 将密码标签添加到面板

        passwordField = new JPasswordField(20);  // 创建密码输入框
        panel.add(passwordField);  // 将密码输入框添加到面板

        JButton adminLoginButton = new JButton("管理员登录");  // 创建管理员登录按钮
        panel.add(adminLoginButton);  // 将登录按钮添加到面板

        // 管理员登录按钮的事件监听器
        adminLoginButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 执行管理员登录验证
                if (validateAdminLogin(usernameField.getText(), new String(passwordField.getPassword()))) {
                    AdminMenuFrame adminMenuFrame = new AdminMenuFrame();
                    adminMenuFrame.setVisible(true);
                    dispose(); // 关闭登录界面
                } else {
                    JOptionPane.showMessageDialog(AdminLoginFrame.this, "登录失败，请检查用户名和密码。", "登录失败", JOptionPane.ERROR_MESSAGE);
                }
            }
        });
    }

    // 验证管理员登录的方法
    private boolean validateAdminLogin(String adminname, String password) {
        try (Connection connection = DBUtil.getConnection();
             PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM admins WHERE adminname = ? AND password = ?")) {
            preparedStatement.setString(1, adminname);
            preparedStatement.setString(2, password);
            ResultSet resultSet = preparedStatement.executeQuery();
            return resultSet.next(); // 如果有匹配的记录，则验证通过
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }
}
